#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  MAX_COLS   20
#define  MAX_INPUT  1000

int read_column_numbres ( int columns[], int max )
{
    int num = 0;
    int ch;

    while ( num < max && scanf("%d", &columns[num] ) == 1 && columns[num] >= 0 )
        num += 1;

    if ( num % 2 != 0 )
    {
        puts( "last columns number is not paired.(柱的数量不是成对的)" );
        exit( EXIT_FAILURE );
    }


    //下面这条语句作用仅仅是 把内存中从上次scanf()函数残留下来的字符给从内存去掉
    while ( ( ch = getchar() ) != EOF && ch != '\n' )
        ;


    return num;
}


void rearrange ( char *output, char const *input, int n_columns, int const columns[] )
{

    int col;  
    int output_col;  
    int len;  

    len = strlen( input );
    output_col = 0;


    for ( col = 0; col < n_columns; col += 2 )
    {
        int nchars = columns[col + 1] - columns[col] + 1;
    

    if ( columns[col] >= len || output_col == MAX_INPUT - 1 )
        break;

    if ( output_col + nchars > MAX_INPUT - 1 )
        nchars = MAX_INPUT - output_col - 1;

    strncpy( output + output_col, input + columns[col],nchars );

    output_col += nchars;

    output[output_col] = '\0';

    }
}



int main ()
{

    int  n_columns;
    int  columns[MAX_COLS];
    char input[MAX_INPUT];
    char output[MAX_INPUT];


    n_columns = read_column_numbres( columns, MAX_COLS );

    while ( gets( input ) != NULL )
    {

        printf("originally input  : %s\n", input );
        rearrange( output, input, n_columns, columns );
        printf("Rearranged line : %s\n", output );
    }
    return EXIT_SUCCESS;
}












